home *** CD-ROM | disk | FTP | other *** search
/ Practical Algorithms for Image Analysis / Practical Algorithms for Image Analysis.iso / TARFILE.GZ / tarfile / ch_3.5 / bcd / edge_finder.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-09-11  |  2.5 KB  |  89 lines

  1. /*
  2.  * (c) Copyright 1988 by Ingemar J. Cox
  3.  * Last modified 2/8/88 Ingemar J. Cox
  4.  * C version 8/2/88 Deborah A. Wallach
  5.  */
  6.  
  7. #define abs(x) ((x)<0 ? -(x) : (x))
  8. //#define max(x, y) ((x)>(y) ? (x) : (y))
  9. //#define min(x, y) ((x)<(y) ? (x) : (y))
  10.  
  11. #define EDGE_X 252
  12. #define EDGE_Y 253
  13. #define EDGE_45 254
  14. #define EDGE_135 255
  15.  
  16. #define FWD 0
  17. #define BWD 1
  18.  
  19. #define diag_scale 1.414        /* scale factor for diagonals */
  20.  
  21. struct image {
  22.   unsigned char *an_image;      /* pointer to image array */
  23.   int nx, ny;                   /* dimensions of image array */
  24.  
  25.   int *gaussian;                /* pointer to output image after convolution */
  26.   int *idx, *idy, *id45, *id135;  /* pointers to o/p from detn filters */
  27.  
  28.   int *filter;                  /* pointer to 1D array of filter coefficients */
  29.   int norm;                     /* normalization factor after convolution */
  30.   int nf, nf2;                  /* nf = size of filter (in pixels), nf2=nf/2 */
  31.   int orient_flag;
  32.   unsigned char *edge_map, *edge_map_hi;
  33.   int lo_threshold;
  34. };
  35.  
  36. /* function definitions */
  37.  
  38. /* bcd.c */
  39. void usage (char *progname);
  40. void main (int argc, char *argv[]);
  41.  
  42. /* conv.c */
  43. void image_convolve (unsigned char *pic);
  44.  
  45. /* ctor.c */
  46. void image_init (unsigned char *array, int xdim, int ydim);
  47.  
  48. /* det.c */
  49. void image_detx ();
  50. void image_dety ();
  51. void image_det45 ();
  52. void image_det135 ();
  53.  
  54. /* dtor.c */
  55. void image_cleanup ();
  56.  
  57. /* edge_map.c */
  58. unsigned char *image_edges (int threshold);
  59. int image_edge_map_lo (register int ix, register int iy, register int index);
  60.  
  61. /* filter.c */
  62. void generate_filter (float sigma);
  63.  
  64. /* find_edg.c */
  65. unsigned char *image_find_edges (float sigma, int *threshold);
  66.  
  67. /* hyst.c */
  68. unsigned char *image_hysteresis (int lo_thld);
  69. void image_neighbor_fwd (register int iy, register int ix, register unsigned char *mapP);
  70. void image_neighbor_bwd (register int iy, register int ix, register unsigned char *mapP);
  71. int Fcontour (register int iy, register int ix);
  72. int Bcontour (register int iy, register int ix);
  73.  
  74. /* loc.c */
  75. int image_locx (register int iy, register int ix, register int index);
  76. int image_locy (register int iy, register int ix, register int index);
  77. int image_loc45 (register int iy, register int ix, register int index);
  78. int image_loc135 (register int iy, register int ix, register int index);
  79.  
  80. /* thin.c */
  81. unsigned char *image_thin ();
  82.  
  83. /* thld.c */
  84. int image_threshold ();
  85.  
  86. /* write.c */
  87. void image_Write_int (char *name, int *pointer);
  88. void image_Write_char (char *name, unsigned char *pointer);
  89.